// ... 其他方法

// 富文本预处理（外部只调用这一个方法就行了）
const dealWithRichText = originHtml => {
  let [html, imgUrls] = addRandomAndGetPreviewImageUrlsFromRichText(originHtml);
  const app = getApp()
  return app.towxml(html, 'markdown', {
    theme: app.globalData.globalTheme,
    events: {
      // 给富文本绑定点击事件
      tap: event => {
        // console.log(event, "towxml event");
        // 只处理图片的点击事件
        if (event.currentTarget.dataset.data && event.currentTarget.dataset.data.attrs && (event.currentTarget.dataset.data.attrs.class == "h2w__img")) {
          const imgurl = event.currentTarget.dataset.data.attrs.src;
          // 传入图片地址，调用微信图片预览 API
          wx.previewImage({
            current: imgurl, // 当前显示图片的http链接
            urls: [imgurl]
          })
        }
      }
    }
  })
}

/**
 * 从富文本中给图片链接添加 random 并且返回图片数组（加 random 防止重复图片预览打乱顺序）
 * @example let [html, imgUrls] = addRandomAndGetPreviewImageUrlsFromRichText(html)
 * @param {string} html 
 */
const addRandomAndGetPreviewImageUrlsFromRichText = html => {
  // 如果没有值的话，直接返回
  if (!html) {
    return html
  }

  let randomIndex = 0
  let imgUrls = []
  // 先匹配到 img 标签，放到 match 里
  html = html.replace(/<img[^>]*>/gim, function (match) {
    randomIndex++
    match = match.replace(/src="[^"]+"/gim, function (match) {
      // 再匹配到 src 标签 '"'
      let src = match.slice(5, -1) + "?random=" + randomIndex // 取到 src 里面的 url
      imgUrls.push(src)
      return 'src="' + src + '"'
    }).replace(/src='[^']+'/gim, function (match) {
      // 再匹配到 src 标签 "'"
      let src = match.slice(5, -1) + "?random=" + randomIndex
      return "src='" + src + "'"
    })

    return match
  })
  return [html, imgUrls]
}

/* 加载动画相关 */
const showLoading = () => {
  wx.showNavigationBarLoading()
  wx.showLoading({
    title: '加载中...',
  })
}
const hideLoading = () => {
  wx.hideLoading()
  wx.hideNavigationBarLoading()
}
const hideLoadingWithErrorTips = () => {
  hideLoading()
  wx.showToast({
    title: '加载失败...',
    icon: 'error',
    duration: 2000
  })
}

module.exports = {
  // ...
  // addRandomAndGetPreviewImageUrlsFromRichText: addRandomAndGetPreviewImageUrlsFromRichText,
  dealWithRichText: dealWithRichText,

  showLoading: showLoading,
  hideLoading: hideLoading,
  hideLoadingWithErrorTips: hideLoadingWithErrorTips,
}
